// 路由权限管理
import router, { asyncRoutes } from '@/router'
import store from "@/store";

let isLogin = false
// 白名单数组
const whiteList = ['/login']
// 路由前置守卫
// to：即将要进入的目标
// from：当前导航正要离开的路由
// next：next 是一个函数，通常是指放行，next() 直接放行 ，next(路径) 跳转到某一个页面
router.beforeEach(async (to, from, next) => {
    // 获取到 token 和后台传来的路由表
    const token = store.getters.token    // token
    // 如果存在 token
    if (token) {
        if (to.path === '/login') {
            // 如果存在 token，访问的是登录页面，直接跳转到主页
            next('/')
        } else {
            // 如果存在 token，访问的是其他页面，直接放行
            if (!store.getters.name) {
                // 如果没有用户数据 发送请求
                await store.dispatch('userStore/getUserInfoActions')
                store.getters.menus.forEach(item => {
                    router.addRoute(item);
                })

                next({ path: to.path, replace: true })
            }
            next()
        }
    } else {
        // 如果不存在 token，访问的是白名单内容，直接放行
        if (whiteList.includes(to.path)) {
            next()
        } else {
            // 没有 token，且不是白名单页面，跳转到登录页面
            next('/login')
        }
    }
})
// 路由后置守卫
router.afterEach(to => {
    // 修改网页标题
    if (to.meta.title) {
        document.title = to.meta.title + "--人资管理" || "人资管理系统"
    } else {
        document.title = "人资管理系统"
    }

})